home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / FixMath.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  3KB  |  152 lines

  1. /*
  2.      File:        FixMath.h
  3.  
  4.      Contains:    Fixed Math Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __FIXMATH__
  19. #define __FIXMATH__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. #if PRAGMA_IMPORT_SUPPORTED
  30. #pragma import on
  31. #endif
  32.  
  33. #if PRAGMA_ALIGN_SUPPORTED
  34. #pragma options align=mac68k
  35. #endif
  36.  
  37. #define fixed1                ((Fixed) 0x00010000L)
  38. #define fract1                ((Fract) 0x40000000L)
  39. #define positiveInfinity    ((long)  0x7FFFFFFFL)
  40. #define negativeInfinity    ((long)  0x80000000L)
  41. /*
  42.     Previously in ToolUtils.i.  Moved here because it makes more sense.
  43. */
  44. #if !OLDROUTINELOCATIONS
  45. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  46. extern pascal Fixed FixRatio(short numer, short denom)
  47.  ONEWORDINLINE(0xA869);
  48.  
  49. extern pascal Fixed FixMul(Fixed a, Fixed b)
  50.  ONEWORDINLINE(0xA868);
  51.  
  52. extern pascal short FixRound(Fixed x)
  53.  ONEWORDINLINE(0xA86C);
  54.  
  55. #endif
  56. #endif
  57. extern pascal Fract Fix2Frac(Fixed x)
  58.  ONEWORDINLINE(0xA841);
  59.  
  60. extern pascal long Fix2Long(Fixed x)
  61.  ONEWORDINLINE(0xA840);
  62.  
  63. extern pascal Fixed Long2Fix(long x)
  64.  ONEWORDINLINE(0xA83F);
  65.  
  66. extern pascal Fixed Frac2Fix(Fract x)
  67.  ONEWORDINLINE(0xA842);
  68.  
  69. extern pascal Fract FracMul(Fract x, Fract y)
  70.  ONEWORDINLINE(0xA84A);
  71.  
  72. extern pascal Fixed FixDiv(Fixed x, Fixed y)
  73.  ONEWORDINLINE(0xA84D);
  74.  
  75. extern pascal Fract FracDiv(Fract x, Fract y)
  76.  ONEWORDINLINE(0xA84B);
  77.  
  78. extern pascal Fract FracSqrt(Fract x)
  79.  ONEWORDINLINE(0xA849);
  80.  
  81. extern pascal Fract FracSin(Fixed x)
  82.  ONEWORDINLINE(0xA848);
  83.  
  84. extern pascal Fract FracCos(Fixed x)
  85.  ONEWORDINLINE(0xA847);
  86.  
  87. extern pascal Fixed FixATan2(long x, long y)
  88.  ONEWORDINLINE(0xA818);
  89.  
  90. #if GENERATINGPOWERPC
  91. extern short WideCompare(const wide *target, const wide *source);
  92.  
  93. extern WidePtr WideAdd(wide *target, const wide *source);
  94.  
  95. extern WidePtr WideSubtract(wide *target, const wide *source);
  96.  
  97. extern WidePtr WideNegate(wide *target);
  98.  
  99. extern WidePtr WideShift(wide *target, long shift);
  100.  
  101. extern unsigned long WideSquareRoot(const wide *source);
  102.  
  103. extern WidePtr WideMultiply(long multiplicand, long multiplier, wide *target);
  104.  
  105. /* returns the quotient */
  106. extern long WideDivide(const wide *dividend, long divisor, long *remainder);
  107.  
  108. /* quotient replaces dividend */
  109. extern WidePtr WideWideDivide(wide *dividend, long divisor, long *remainder);
  110.  
  111. extern WidePtr WideBitShift(wide *src, long shift);
  112.  
  113. #endif
  114. #if GENERATING68K && !GENERATING68881
  115. extern pascal double_t Frac2X(Fract x)
  116.  ONEWORDINLINE(0xA845);
  117.  
  118. extern pascal double_t Fix2X(Fixed x)
  119.  ONEWORDINLINE(0xA843);
  120.  
  121. extern pascal Fixed X2Fix(double_t x)
  122.  ONEWORDINLINE(0xA844);
  123.  
  124. extern pascal Fract X2Frac(double_t x)
  125.  ONEWORDINLINE(0xA846);
  126.  
  127. #else
  128. extern pascal double_t Frac2X(Fract x);
  129.  
  130. extern pascal double_t Fix2X(Fixed x);
  131.  
  132. extern pascal Fixed X2Fix(double_t x);
  133.  
  134. extern pascal Fract X2Frac(double_t x);
  135.  
  136. #endif
  137.  
  138. #if PRAGMA_ALIGN_SUPPORTED
  139. #pragma options align=reset
  140. #endif
  141.  
  142. #if PRAGMA_IMPORT_SUPPORTED
  143. #pragma import off
  144. #endif
  145.  
  146. #ifdef __cplusplus
  147. }
  148. #endif
  149.  
  150. #endif /* __FIXMATH__ */
  151.  
  152.